﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExpressHelps
{
    // 抽象主题（Subject） - 被观察者
    public interface ITaskObservable
    {
        void AddObserver(ITaskObserver observer);
        void RemoveObserver(ITaskObserver observer);
        void NotifyObservers(Task task);
    }

    // 具体主题（ConcreteSubject） - 具体的任务管理系统
    public class TaskManager : ITaskObservable
    {
        private List<ITaskObserver> observers = new List<ITaskObserver>();

        public void AddObserver(ITaskObserver observer)
        {
            observers.Add(observer);
        }

        public void RemoveObserver(ITaskObserver observer)
        {
            observers.Remove(observer);
        }
        //
        public void NotifyObservers(Task task)
        {
            foreach (var observer in observers)
            {
                observer.Update(task);
            }
        }

        public void PublishTask(string description)
        {
            //Task task = new Task { Description = description, Status = "New" };
           // Console.WriteLine($"New task published: {task.Description}");
            //NotifyObservers(task);
        }
    }

}
